package br.com.fatecjp.pooai.gerenciador.taxi.message.parser;

import br.com.fatecjp.pooai.gerenciador.taxi.ambiente.Posicao;
import br.com.fatecjp.pooai.gerenciador.taxi.message.ConteudoMensagemAgente;

public class RequisicaoInformeBuscaClienteParser extends
		ConteudoMensagemAgenteParser {

	public boolean hasComplemento() {
		return true;
	}

	public String converterComplemento(ConteudoMensagemAgente source) {

		String complemento = null;

		if (source.getConteudo() != null && source.getConteudo().length > 0) {
			Object posicaoOrigemObj = source.getConteudo()[0];
			if (posicaoOrigemObj != null) {
				Posicao origem = (Posicao) posicaoOrigemObj;
				complemento = origem.getX() + SEPARADOR + origem.getY()
						+ SEPARADOR;
			}
			Object posicaoDestinoObj = source.getConteudo()[1];
			if (posicaoDestinoObj != null) {
				Posicao destino = (Posicao) posicaoDestinoObj;
				complemento += destino.getX() + SEPARADOR + destino.getY()
						+ SEPARADOR;
			}
			Object identClienteObj = source.getConteudo()[2];
			if (identClienteObj != null) {
				complemento += identClienteObj.toString() + SEPARADOR;
			}
		}

		return complemento;

	}

	public Object[] extrairComplemento(String[] partes) {

		Object[] complemento = null;

		if (partes != null && partes.length > 0) {

			Integer posicaoXOrigem = null;
			try {
				posicaoXOrigem = new Integer(partes[0]);
			} catch (NumberFormatException ex) {
				throw new IllegalArgumentException(ex);
			}

			Integer posicaoYOrigem = null;
			try {
				posicaoYOrigem = new Integer(partes[1]);
			} catch (NumberFormatException ex) {
				throw new IllegalArgumentException(ex);
			}

			Integer posicaoXDestino = null;
			try {
				posicaoXDestino = new Integer(partes[2]);
			} catch (NumberFormatException ex) {
				throw new IllegalArgumentException(ex);
			}

			Integer posicaoYDestino = null;
			try {
				posicaoYDestino = new Integer(partes[3]);
			} catch (NumberFormatException ex) {
				throw new IllegalArgumentException(ex);
			}

			String identCliente = partes[4];

			complemento = new Object[] {
					new Posicao(posicaoXOrigem.intValue(),
							posicaoYOrigem.intValue()),
					new Posicao(posicaoXDestino.intValue(),
							posicaoYDestino.intValue()), identCliente };

		}

		return complemento;

	}

}
